package leetcode_400;

/**
 *@author 周杨
 *MaximumProductOfWordLengths_318 给定一个字典 判断哪两个字符串没有重复的字母 且长度乘积最大
 *describe:用编码 字母只有26位 二进制位有32位 异或运算  AC  70%
 *2018年7月3日 上午8:58:56
 */
public class MaximumProductOfWordLengths_318 {
	 public int maxProduct(String[] words) {
	        int[] code= new int[words.length];
	        for (int i=0; i<words.length; i++) 
	        	for (char c: words[i].toCharArray()) code[i]|=(1<<c-'a');//对该字符串进行唯一编码  用异或运算符 判断哪一位存在
	        int res=0;
	        for (int i=0; i<words.length; i++)
	            for (int j=i+1; j<words.length; j++)
	                if ((code[i]&code[j])==0) res=Math.max(res, words[i].length()*words[j].length());
	        return res;
	 }
}
